#ifndef App_h__
#define App_h__

#include "StartupStruct.h"

#include <SDL.h>

namespace le
{
	class App
	{
	public:
		App();
		virtual ~App();

		virtual bool Init(le::StartupStruct& startupStruct);
		virtual void Update() = 0;

		/** The raw call from SDL to be passed on to the app */
		virtual void OnInputEvent(const SDL_Event& event) = 0;

		// This runs the game loop. If this function ever exists, the game has quited
		int Run();

	private:
		void CleanupSDL();

	private:
		SDL_Window* m_DisplayWindow;
		SDL_Renderer* m_DisplayRenderer;
	};
}

#endif // App_h__